﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace sjt_console20200521
{
    class Program
    {
        static void Main(string[] args)
        {
            //自增自减运算
            //test01();
            // 逻辑短路
            //test02();
            // 位运算
            //test03();
            // 结合性
            test04();
            Console.Read();
        }
        /// <summary>
        /// 运算符的结核性
        /// </summary>
        static void test04()
        {
            int i = 1;
            int j = 1;
            int k;
            k = i++ + j; // 注意 ++ 运算符和 + 运算符的结合性
            Console.WriteLine("k={0}",k);
        }

        /// <summary>
        /// 位运算：计算机中所有的数都是以补码的形式存在的；
        /// </summary>
        static void test03()
        {
            int i1 = -3; ///?  因为 -3 在计算机中是以补码存在的，取反取得是补码的反；  
            // 运算规则：1000 0011 原码 ---> 1111 1100+1 --> 1111 1101 反码

            int j1 = ~i1;// 3?  结果： 1111 1101 取反 --->  0000 0010     2 
            Console.WriteLine("j1={0}",j1);
            int x = 24;
            x += x += x %= 17;

        }

        /// <summary>
        /// 逻辑短路
        /// </summary>
        static void test02()
        {
            // 验证逻辑短路
            int i1 = 1;
            int i2 = 2;
            int i3 = 3;
            int i4 = 4;
            int i5 = 5;
            // 与短路
            
            Boolean isOK1 = i1++ > 1 && ++i2 > 2 && i3-- <= 3; // 因为 i1++ > 1 false发生了逻辑短路；后面的表达式不在运算
            // 预期结果： i1=2 ； i2=3 ； i3=2
            Console.WriteLine("表达式结果：{0}；变量的值为：i1={1}，i2={2}，i3={3}",isOK1,i1,i2,i3);
         
        }

        /// <summary>
        /// 自增自减运算
        /// </summary>
        static void test01()
        {
            // i++ 和 ++i 的区别

            int i = 1; // 变量i的值为 1

            int j = --i; // j存储表达式 --i的值

            Console.WriteLine("表达式 --i 的值为 {0}；变量i的值为{1}", j, i);


            // i++ 和 ++i 的区别

            int ii = 1; // 变量ii的值为 1

            int jj = ii--; // jj存储表达式 ii-- 的值

            Console.WriteLine("表达式 ii-- 的值为 {0}；变量ii的值为{1}", jj, ii);
            // 暂停
            Console.Read();
        }
    }
}
